import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import path from 'path';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
import eslintPlugin from 'vite-plugin-eslint';

const resolve = dir => path.join(__dirname, dir);
const timestamp = new Date().getTime();

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()],
      include: [
        /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
        /\.vue$/,
        /\.vue\?vue/, // .vue
        /\.md$/ // .md
      ],
      // 配置文件生成位置
      dts: './auto-imports.d.ts',
      // 自动导入 Vue、Vue-Router 相关函数，如：ref, reactive, toRef 等
      imports: ['vue', 'vue-router', 'pinia'],

      eslintrc: {
        // 已存在文件设置默认 false，需要更新时再打开，防止每次更新都重新生成
        enabled: true,
        // 生成文件地址和名称
        filepath: './.eslintrc-auto-import.json',
        globalsPropValue: true
      }
    }),
    Components({
      resolvers: [ElementPlusResolver()]
    }),
    // 增加下面的配置项,运行时检查eslint规范
    eslintPlugin({
      include: ['src/**/*.js', 'src/**/*.vue', 'src/*.js', 'src/*.vue']
    })
  ],
  base: './',
  resolve: {
    alias: {
      '@': resolve('src')
    }
  },
  // css: {
  //   // css预处理器
  //   preprocessorOptions: {
  //     less: {
  //       javascriptEnabled: true,
  //       charset: false,
  //       additionalData: '@import "./src/styles/theme.less";'
  //     }
  //   }
  // },
  build: {
    rollupOptions: {
      input: {
        main: path.resolve(__dirname, 'index.html')
      },
      output: {
        // 入口文件名
        entryFileNames: `static/js/[name]-[hash]-${timestamp}.js`,
        // 块文件名
        chunkFileNames: `static/js/[name]-[hash]-${timestamp}.js`,
        // 资源文件名 css 图片等
        assetFileNames: `static/[ext]/[name]-[hash]-${timestamp}.[ext]`
      }
    }
  },
  server: {
    //服务器主机名
    host: '0.0.0.0',
    //端口号
    port: 5173,
    //服务器启动时自动在浏览器中打开应用程序,当此值为字符串时，会被用作 URL 的路径名
    open: false
    //自定义代理规则
    // proxy: {
    //   // 选项写法
    //   '/api': {
    //     target: 'http://jsonplaceholder.typicode.com',
    //     changeOrigin: true,
    //     rewrite: path => path.replace(/^\/api/, '')
    //   }
    // }
  }
});
